﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

/**
 * 送信すべきメールを表現するクラス
*/
namespace Kaidou.Util
{
    public class Mail
    {
        /** SMTP サーバー名 */
	    private	string				smtpHostName;

	    /** 優先度  (5[低] ～ 1[高]) (設定していない場合にはデフォルト値 (mailservice.properties を参照) を使用します) */
	    private string				priority;
	    /** 送信者 (FROM) (設定していない場合にはデフォルト値 (mailservice.properties を参照) を使用します) */
	    private	string				from;
	    /** 文字コード (設定していない場合にはデフォルト値 (mailservice.properties を参照) を使用します) */
	    private	string				charSet;
	    /** 宛先 (TO) リスト */
	    private	string[]			toList;
	    /** 宛先 (CC) リスト */
	    private	string[]			ccList;
	    /** 宛先 (BCC) リスト */
	    private string[]			bccList;
	    /** 返信者 (REPLYTO) */
	    private string              replyTo;
	    /** 件名 (Subject) */
	    private	string				subject;
	    /** 本文 (Content) */
	    private string				message;
	    /** 添付ファイルリスト */
	    private string[]			fileNameList;
	
	    /**
	     * 本クラスのデフォルトコンストラクタです。
	    */
	    public Mail()
	    {
		    // メンバ変数をクリア
		    smtpHostName	= null;
		    charSet			= null;
		    priority		= null;
		    from			= null;
		    toList			= null;
		    ccList			= null;
		    bccList			= null;
		    replyTo         = null;
		    subject			= null;
		    message			= null;
		    fileNameList	= null;
	    }
	    /**
	     * SMTP サーバー名を設定します
	     * @param	smtpHostName	SMTP サーバー名
	    */
	     public void setSmtpHostName(string smtpHostName){
		    this.smtpHostName = smtpHostName;
	    }
	    /**
	     * SMTP サーバー名を取得します
	     * @param	string			SMTP サーバー名
	    */
	     public string getSmtpHostName(){
		    return this.smtpHostName;
	    }

	    /**
	     * 文字コードを設定します
	     * @param	charSet			文字コード
	    */
	     public void setCharSet(string charSet){
		    this.charSet = charSet;
	    }
	    /**
	     * 文字コードを取得します
	     * @return	string			文字コード
	    */
	     public string getCharSet(){
		    return this.charSet;
	    }
    	
	    /**
	     * 優先度を設定します
	     * @param	priority	優先度
	    */
	     public void setPriority(string priority){
		    this.priority = priority;
	    }
	    /**
	     * 優先度を取得します
	     * @return	string		優先度
	    */
	     public string getPriority(){
		    return this.priority;
	    }

	    /**
	     * 送信者メールアドレスを設定します
	     * @param	from		送信者メールアドレス
	    */
	     public void setFrom(string from){
		    this.from = from;
	    }
	    /**
	     * 送信者メールアドレスを取得します
	     * @return	string		送信者メールアドレス
	    */
	     public string getFrom(){
		    return this.from;
	    }

	    /**
	     * 宛先メールアドレス (TO) リストを設定します
	     * @param	toList		送信者メールアドレスリスト
	    */
	     public void setToList(string[] toList){
		    this.toList = toList;
	    }
	    /**
	     * 宛先メールアドレス (TO) リストを設定します
	     * @param	list		送信者メールアドレスリスト
	    */
	     public void setToList(List<string> list){
             string[] work = new string[list.Count];
             for (int n = 0; n < list.Count; n++)
			    work[n] = list[n];
		    toList = work;
	    }
	     public void setTo(string to)
	    {
            string[] work = new string[1];
		    work[0] = to;
		    setToList(work);
	    }
    	
	    /**
	     * 宛先メールアドレス (TO) リストを取得します
	     * @return	string[]	送信者メールアドレスリスト
	    */
	     public string[] getToList(){
		    return this.toList;
	    }
	    /**
	     * 宛先メールアドレス (TO) を取得します
	     * @param	i			リストのインデックス
	     * @return	string[]	送信者メールアドレスリスト
	    */
	     public string getTo(int i){
		    return this.toList[i];
	    }

	    /**
	     * 宛先メールアドレス (CC) リストを設定します
	     * @param	ccList		送信者メールアドレスリスト
	    */
	     public void setCcList(string[] ccList){
		    this.ccList = ccList;
	    }
	    /**
	     * 宛先メールアドレス (TO) リストを設定します
	     * @param	list		送信者メールアドレスリスト
	    */
	     public void setCcList(List<string> list){
             string[] work = new string[list.Count];
             for (int n = 0; n < list.Count; n++)
                 work[n] = list[n];
		    ccList = work;
	    }
	    /**
	     * 宛先メールアドレス (CC) リストを取得します
	     * @return	string[]	送信者メールアドレスリスト
	    */
	     public string[] getCcList(){
		    return this.ccList;
	    }
	    /**
	     * 宛先メールアドレス (CC) リストを取得します
	     * @param	i			リストのインデックス
	     * @return	string[]	送信者メールアドレスリスト
	    */
	     public string getCc(int i){
		    return this.ccList[i];
	    }

	    /**
	     * 宛先メールアドレス (BCC) を設定します
	     * @param	bcc		送信者メールアドレス
	    */
	     public void setBcc(string bcc)
	    {
            string[] work = new string[1];
		    work[0] = bcc;
		    setBccList(work);
	    }
	    /**
	     * 宛先メールアドレス (BCC) リストを設定します
	     * @param	bccList		送信者メールアドレスリスト
	    */
	     public void setBccList(string[] bccList){
		    this.bccList = bccList;
	    }
	    /**
	     * 宛先メールアドレス (TO) リストを設定します
	     * @param	list		送信者メールアドレスリスト
	    */
	     public void setBccList(List<string> list){
             string[] work = new string[list.Count];
             for (int n = 0; n < list.Count; n++)
                 work[n] = list[n];
		    bccList = work;
	    }
	    /**
	     * 宛先メールアドレス (BCC) リストを取得します
	     * @return	string[]	送信者メールアドレスリスト
	    */
	     public string[] getBccList(){
		    return this.bccList;
	    }
	    /**
	     * 宛先メールアドレス (BCC) リストを取得します
	     * @param	i			リストのインデックス
	     * @return	string[]	送信者メールアドレスリスト
	    */
	     public string getBcc(int i){
		    return this.bccList[i];
	    }

	    /**
	     * 返信先メールアドレス (REPLYTO) を取得します
	     * @return	string	返信先メールアドレス
	    */
	     public string getReplyTo(){
		    return this.replyTo;
	    }
	    /**
	     * 返信先メールアドレス (REPLYTO) を取得します
	     * @param	replyTo 返信先メールアドレス
	    */
	     public void setReplyTo(string replyTo){
		    this.replyTo = replyTo;
	    }

	    /**
	     * 件名を設定します
	     * @param	subject		送信メールの件名
	    */
	     public void setSubject(string subject){
		    this.subject = subject;
	    }
	    /**
	     * 件名を取得します
	     * @return	string		送信メールの件名
	    */
	     public string getSubject(){
		    return this.subject;
	    }

	    /**
	     * 本文を設定します
	     * @param	message		送信メールの本文
	    */
	     public void setMessage(string message){
		    this.message = message;
	    }
	    /**
	     * 本文を取得します
	     * @param	string			送信メールの本文
	    */
	     public string getMessage(){
		    return this.message;
	    }

	    /**
	     * 添付ファイル名リストを設定します
	     * @return	fileNameList	添付ファイルリスト
	    */
	     public void setFileNameList(string[] fileNameList){
		    this.fileNameList = fileNameList;
	    }
	    /**
	     * 添付ファイル名リストを取得します
	     * @param	string[]	添付ファイルリスト
	    */
	     public string[] getFileNameList(){
		    return this.fileNameList;
	    }
	    /**
	     * 添付ファイル名リストを取得します
	     * @param	i			リストのインデックス
	     * @return	string[]	添付ファイルリスト
	    */
	     public string getFileName(int i){
		    return this.fileNameList[i];
	    }
    }
}
